就像前言提到的「生成式 AI 所生產的內容都跟你所提供的訓練資料有關」,因此它也有相對的好處,等於你只要有一個強大的機器學習模型,配合你的資料,等於你就可以創造屬於你的專屬 AI,當前的 ChatGPT 其實就有這樣的功能,因此「數據收集」就會是最重要的一課。
可以先選一個你有興趣的主題,像是股票價格預測、或是個性媒合機器人等等,我這邊舉一個例子,就用「房價預測」來解說
當你想要做到房價預測的時候,應該要思考「什麼樣的資料可以幫助我達成這個目標」,這就會關係到「你需要提供哪些資料」。以房價預測來說:「地段、價格、地價、坪數等」都是很重要的判斷依據,因此根據這些依據後,你就可以上網搜集相關的 raw data
Raw data 的獲取其實是我覺得最難的,大家都知道現在進入到大數據時代,數據反而是最值錢的因此持續的累積可以訓練的 data 也是創造生成式 AI 很重要的一步驟。
[
{
"房屋ID": 1,
"位置": "松山區",
"房屋面積(坪)": 30,
"房齡(年)": 5,
"房價(萬)": 1500
},
{
"房屋ID": 2,
"位置": "大安區",
"房屋面積(坪)": 40,
"房齡(年)": 10,
"房價(萬)": 2000
},
{
"房屋ID": 3,
"位置": "信義區",
"房屋面積(坪)": 35,
"房齡(年)": 8,
"房價(萬)": 1800
}
]
理想的 raw data 包含「資料格式相同」、「具有清楚的可辨識性」、「沒有空值」,但現實是骨感的,我們更常拿到的是這種 data
[
{
"房屋ID": 1,
"位置": "松山區",
"房屋面積(坪)": "三十", // 非數字格式
"房齡(年)": 5,
"房價(萬)": 1500
},
{
"房屋ID": 2,
"位置": "大安區",
"房屋面積(坪)": 40,
"房齡(年)": "十", // 非數字格式
"房價(萬)": null // 缺失值
},
{
"房屋ID": null, // 缺失值
"位置": "信義區",
"房屋面積(坪)": 35,
"房齡(年)": 8,
"房價(萬)": 1800
},
{
"房屋ID": 4,
"位置": "中山區",
"房屋面積(坪)": 50,
"房齡(年)": -3, // 不合理的負數
"房價(萬)": 2200
}
]
我們當然不可能直接把這個數據給程式訓練,只會訓練出無法達到期望的模型,因此就會有我們下一步驟「數據清理」,透過將我們拿到的原始數據整理成我們理想的資料格式,這樣才可以訓練出根據我們資料進行推測的預測模型呦!